package com.ruoyi.organization.service;

import com.ruoyi.business.domain.BoardViewVo;
import com.ruoyi.business.domain.vo.FamilyDto;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.organization.domain.BizPeople;
import com.ruoyi.organization.domain.vo.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 村民Service接口
 *
 * @author ruoyi
 * @date 2024-05-10
 */
public interface IBizPeopleService {
    /**
     * 查询村民
     *
     * @param peopleId 村民主键
     * @return 村民
     */
    public BizPeople selectBizPeopleByPeopleId(Long peopleId);

    /**
     * 查询村民列表
     *
     * @param bizPeople 村民
     * @return 村民集合
     */
    public List<BizPeople> selectBizPeopleList(BizPeople bizPeople);

    /**
     * 新增村民
     *
     * @param bizPeople 村民
     * @return 结果
     */
    public int insertBizPeople(BizPeople bizPeople);

    /**
     * 修改村民
     *
     * @param bizPeople 村民
     * @return 结果
     */
    public int updateBizPeople(BizPeople bizPeople);

    /**
     * 批量删除村民
     *
     * @param peopleIds 需要删除的村民主键集合
     * @return 结果
     */
    public int deleteBizPeopleByPeopleIds(Long[] peopleIds);

    /**
     * 删除村民信息
     *
     * @param peopleId 村民主键
     * @return 结果
     */
    public int deleteBizPeopleByPeopleId(Long peopleId);

    /**
     * 导入用户
     *
     * @param userList
     * @param updateSupport
     * @param operName
     * @return
     */
    String importUser(List<BizPeopleVo> userList, boolean updateSupport, String operName);

    /**
     * 生成村民身份牌
     *
     * @param response
     * @param peopleId
     */
    BizPeopleCard2Vo generatePeopleCard(HttpServletResponse response, Long peopleId);

    /**
     * 根据户主身份证查看家庭成员
     *
     * @param familyPeople
     * @return
     */
    List<BizPeople> familyPeople(FamilyPeople familyPeople);

    /**
     * 查询基础报表
     *
     * @return
     */
    BoardViewVo systemBoardView();

    /**
     * 查询期间内每日的积分流水报表
     *
     * @param startDate
     * @param endDate
     * @return
     */
    List<FamilyScoreLogViewVo> getScoreLogGroupByDay(String startDate, String endDate);

    /**
     * 审核居民信息
     *
     * @param bizPeople
     * @return
     */
    int auditPeople(BizPeople bizPeople);

    int setHeadCard(BizPeople bizPeople);

    /**
     * 设置网格员
     *
     * @param girdVo
     * @return
     */
    int setGird(GirdVo girdVo);

    Map<String, BizPeople> selectBizPeopleMap(BizPeople bizPeople);

    /**
     * 居民列表的网格
     *
     * @param dataTable
     * @return
     */
    TableDataInfo doPeopleGird(TableDataInfo dataTable);

    /**
     * 设置党员
     *
     * @param bizPeople
     * @return
     */
    int changeIsParty(BizPeople bizPeople);

    /**
     * 导入网格员
     *
     * @param userList
     * @param updateSupport
     * @param operName
     * @return
     */
    String importGridData(List<BizBridVo> userList, boolean updateSupport, String operName);

    /**
     * 查询指定的人
     *
     * @param innerBizBrids
     * @return
     */
    List<BizPeople> findAllGridByMobileAndName(List<InnerBizBrid> innerBizBrids);

    /**
     * 设置用户迁入
     *
     * @param ingoing
     * @return
     */
    int setIngoing(Ingoing ingoing, String opName);

    /**
     * 重置解绑村民微信
     *
     * @param peopleIds
     * @return
     */
    int resetPeopleOpenId(List<Long> peopleIds);

    /**
     * 重置微信
     * @param bizPeople
     * @return
     */
	int resetWx(BizPeople bizPeople,String opName);

    /**
     * 通过成员名称寻找户主
     * @param peopleName
     * @return
     */
    BizPeople selectBizPeopleByPeopleName(String peopleName);

    /**
     * 变更社区
     * @param bizSetCommunity
     * @param username
     * @return
     */
    int doSetCommunity(BizSetCommunity bizSetCommunity, String username);

    /**
     * 根据成员查看家庭
     * @param peopleId
     * @return
     */
    FamilyDto findFamlily(Long peopleId);

    /**
     * 普通村居民解绑微信号
     * @param bizPeople
     * @param username
     * @return
     */
    int resetCommonWx(BizPeople bizPeople, String username);
}
